home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / ab20 / ab20_archive / utilities / printer / pf_deskjet.lzh / PF / Source / pf2.c < prev    next >
C/C++ Source or Header  |  1991-09-27  |  3KB  |  113 lines

  1. /*---------------------------------------------------------*
  2.  | Author:  Maurizio Loreti, aka MLO or I3NOO.             |
  3.  | Address: University of Padova - Department of Physics   |
  4.  |          Via F. Marzolo, 8 - 35131 PADOVA - Italy       |
  5.  | Phone:   (39)(49) 844-313         FAX: (39)(49) 844-245 |
  6.  | E-Mail:  LORETI at IPDINFN (BITNET); or VAXFPD::LORETI  |
  7.  |         (DECnet) - VAXFPD is node 38.257 i.e. 39169; or |
  8.  |          LORETI@PADOVA.INFN.IT (INTERNET).              |
  9.  | Home: Via G. Donizetti 6 - 35010 CADONEGHE (PD) - Italy |
  10.  *---------------------------------------------------------*/
  11.  
  12. /*--------------------------------*
  13.  | PF.c - Short for PRINTFILES.c  |
  14.  | See the Read.Me file for help. |
  15.  *--------------------------------*/
  16.  
  17. #include <stdio.h>                              /* Standard library */
  18. #include <string.h>
  19. #include <exec/types.h>                         /* Amiga specific */
  20. #include <intuition/intuition.h>
  21. #include <graphics/gfxbase.h>
  22. #include <libraries/dos.h>
  23. #include <libraries/reqbase.h>
  24. #include <devices/printer.h>
  25. #include <proto/intuition.h>
  26. #include <proto/graphics.h>
  27. #include "mlo.h"                                /* This program's stuff */
  28. #include "pf2.h"
  29. #include "global.h"
  30.  
  31. static char Version_Tag[] = VERSION_TAG;        /* For C:VERSION PF2 */
  32.  
  33. void main(
  34.   int argc,
  35.   char **argv
  36. ){
  37.  
  38. /**
  39.  | Main program: look if we were started from CLI or Workbench;
  40.  | then process printer parameters; last, print selected files.
  41.  
  42. **/
  43.  
  44.   Boolean select = False;             /* 'Some file selected' flag */
  45.   struct ESStructure *pESS;           /* 'Extended selection' pointer */
  46.   char fileName[FIL_MAX];             /* File name */
  47.   char dirName[DIR_MAX];              /* Directory name */
  48.   char target[TOT_MAX];               /* Complete name */
  49.   int i;
  50.  
  51.   if (argc) {
  52.     IntuitionBase = LibOpen("intuition.library",  REVISION);
  53.     FromCLI = True;
  54.     argv = Setup(&argc, argv);
  55.   } else {
  56.     FromCLI = False;
  57.     SetupWB();
  58.  
  59. /**
  60.  | Set file requester parameters (only if called from the Workbench)
  61. **/
  62.  
  63.     fr.Title = "File(s) to print:";
  64.     fr.Dir   = dirName;
  65.     fr.File  = fileName;
  66.     fr.Flags = FRQSHOWINFOM | FRQCACHINGM | FRQINFOGADGETM |
  67.                FRQEXTSELECTM | FRQSAVINGM;
  68.     fr.MaxExtendedSelect = MAX_FILES;
  69.     fr.dirnamescolor     = fr.devicenamescolor  = RED_PEN;
  70.     fr.stringnamecolor   = fr.stringgadgetcolor = BLACK_PEN;
  71.     fr.boxbordercolor    = fr.gadgetboxcolor    = BLACK_PEN;
  72.   }
  73.  
  74.   InitPrinter();
  75.   bufferLength -= nBlanks;
  76.  
  77.   if (FromCLI) {
  78.     for (; argc--; argv++) {
  79.       DoOutput(*argv);
  80.     }
  81.   } else {
  82.     FOREVER {
  83.       fileName[0] = NIHIL;
  84.       if (FileRequester(&fr)) {
  85.         select = True;
  86.         strcpy(target, dirName);
  87.         if ((i = strlen(target))  &&  target[i-1] != ':') {
  88.           target[i++] = '/';
  89.         }
  90.         if ((pESS = fr.ExtendedSelect) == NULL) {
  91.           strcpy(target+i, fileName);
  92.           DoOutput(target);
  93.         } else {
  94.           do {
  95.             strcpy(target+i, pESS->thefilename);
  96.             DoOutput(target);
  97.           } while ( (pESS = pESS->NextFile) != NULL);
  98.         }
  99.       } else {
  100.         break;
  101.       }
  102.     }
  103.  
  104.     if (!select) {
  105.       puts("Printer initialised ... Good bye!");
  106.       Cleanup(SYS_NORMAL_CODE);
  107.     }
  108.   }
  109.  
  110.   FlushBuffers();
  111.   ExitProgram();
  112. }
  113.